package com.alibaba.citrus.ots.unified.inventory.api;

import com.alibaba.citrus.ots.unified.inventory.dto.api.request.AllocateApplyOrderCreateDTO;
import com.alibaba.citrus.ots.unified.inventory.dto.api.request.AllocateApplyOrderReplyDTO;
import com.alibaba.citrus.ots.unified.inventory.dto.api.request.AllocateApplyOrderUpdateDTO;
import com.alibaba.citrus.ots.unified.inventory.dto.api.response.AllocateApplyOrderDetailDTO;
import com.alibaba.lattice2.epoch.meshflow.model.annotation.MeshFlowService;
import com.alibaba.cz.base.tool.result.Result;

/**
 * @author heyu
 * @description 调拨预报单写服务
 */
@MeshFlowService(apps = {"bc_ots"})
public interface AllocateApplyOrderWriteService {
    /**
     * 创建预调拨单
     * @param allocateApplyOrderCreateDTO
     * @return
     */
    Result<AllocateApplyOrderDetailDTO> createAllocateApplyOrder(AllocateApplyOrderCreateDTO allocateApplyOrderCreateDTO);


    /**
     * 更新预调拨单
     * @param allocateApplyOrderUpdateDTO
     * @return
     */
    Result<Boolean> updateAllocateApplyOrder(AllocateApplyOrderUpdateDTO allocateApplyOrderUpdateDTO);

    /**
     * 提交预调拨单
     * @param allocateApplyOrderUpdateDTO
     * @return
     */
    Result<Boolean> submitAllocateApplyOrder(AllocateApplyOrderUpdateDTO allocateApplyOrderUpdateDTO);

    /**
     * 回复预调拨单
     * @param allocateApplyOrderReplyDTO
     * @return
     */
    Result<Boolean> replyAllocateApplyOrder(AllocateApplyOrderReplyDTO allocateApplyOrderReplyDTO);

    /**
     * 取消调拨预报单
     * @return
     */
    Result<Boolean> cancelAllocateApplyOrder(String code);

    /**
     * 驳回调拨预报单
     * @return
     */
    Result<Boolean> rejectAllocateApplyOrder(String code);

    /**
     * 复制预报单
     * @param code
     * @return
     */
    Result<AllocateApplyOrderDetailDTO> copyAllocateApplyOrder(String code);

}
